Stanford Dodge Ball README
--------------------------

Emilio Antunez
Kjell Reutersward
Toru Kuzuhara


Intro
-----

Stanford Dodge Ball is loosely based on the Super Dodgeball games developed by 
Technos Japan.  The game originally appeared on the NES (Famicom), and exists in 
its latest incarnation as Super Dodge Ball Advance for the Game Boy Advance 
handheld system

The basic idea is that each player on the field has a certain amount of life, 
which depletes as they get hit by the ball.  When a ball is thrown at a person, 
that person may dodge or catch the ball.  After getting hit a certain amount, 
that player is removed from the field.

We developed this game for the Fall 2003 CS248 (Introduction to Computer 
Graphics) final project at Stanford University.  We had roughly one month for 
this project, which in our case broke down to 1 week planning, 1 week defining 
and implementing the overall structure, and 2 weeks mad coding.  Given the time 
constraints, we hope you understand the inherent limitations in our game.


System Requirements
-------------------

We developed this game in a Windows environment, using laptops with 1GHz+ 
processors and 512MB+ memory.  The weakest graphics card of the bunch was a 
Geforce2Go with 16MB of memory.  Shadows had to be disabled to run smoothly with 
this card.  In general, a Geforce3+ or equivalent Radeon  should probably be 
more than enough.  512MB memory is recommended mainly because we were very 
careless about memory management.  Although currently the game is Windows only, 
a Linux port should be easy to implement since we used the cross platfrom SDL 
library.  We will consider doing this in the future if we are bored.

The "Options" menu from the title screen allows you to disable shadows, which 
should increase performance greatly if the game seems slow or choppy.  You can 
disable backgrounds too, although we haven't noticed any significant improvement 
from this.


Controls
--------

When in the menu system, you can use the up, down, left, right, arrow keys, and 
enter to select.  Should be self explanatory.

In the game, the controls are the following:

a,s,d,w : directional controls
space	: switch characters (you can do this only if you are not currently 
holding the ball)
j 	: throw/catch (depending on whether you are holding the ball or not)
	  note that catches need to be timed, i.e. don't press catch until you 
see the ball coming at you)
k	: pass ball
>	: jump

Remember, press ESC at any time to exit the game.

And by the way, there is gamepad support!  We've only tried with the Gravis 
Gamepad Pro, USB.  If the gamepad is plugged in, it should work automatically 
when you start playing the game (it won't work while you're in the menus 
however.)


How to Start a Network Game
---------------------------

You can play a LAN game, with up to 6 players (note we've only tried up to 3, 
but 6 *should* work).  Just select "Multiplayer" at the title screen.  Only ONE 
computer should host, all others should select "join".  When you join, make sure 
to enter the IP address of the host.  You MUST have a unique handle for each 
client, otherwise you will be unable to join.  You should probably leave the 
port number at 24800, unless you know of another application using it.

If you successfully join a hosted game, you should be in the Game Setup screen.  
Here, use the left right arrows to select the positions of everyone in the game.
For example, in a 2 player game, it should be set up like this:

Position 1:	A
Position 2:	A
Position 3:	A
Position 4:	B
Position 5:	B
Position 6:	B

Where A and B are the handles of the two players.

"AI Only" means that no one will be able to switch to that character.  For 
example, if you want 3 humans against 3 computers, set the humans to positions 1 
thru 3 and "AI Only" on 4-6.

If you see a lot of latency when trying to select the positions, try having 
someone else host instead.  When the game starts, make sure everyone presses 
enter, otherwise they will have difficulty playing.


Buglist
-------

- may get access violations and segfaults occasionally
- there is no memory cleanup.  Try not to flip back and forth between menus, as 
this will increase memory consumption.  Because of this, the game is set to quit 
after a single game.
- Switching characters may result in odd behaviour, depending on conditions.  
Try to switch characters sparingly, especially when people have been removed 
from the field.
- the network code is really messy.  Thus, it is recommended to restart the game 
if there are any problems trying to set up a network game.  For example, if a 
player drops out, there is no notification to the server of this.


Unimplemented Features List
---------------------------

- There is a super bar on the bottom that increments slowly as you get hit or 
catch the ball.  We envisioned a super move occurring when this bar gets filled 
up.  Currently, we have no super moves implemented, so other than the characters 
saying a different phrase, there is really no effect in the game.
- There's some quirky behaviour where a character may possibly regain control in 
mid-air after getting hit.
- Players "die" by simply being transported high up into the air (off screen).  
You may notice this occasionally if the game zooms out really far and you see 
your dead character floating high above the field.  This was a quick hack and is 
probably not ideal.
- You may have realized that you can't select "credits" from the title screen.  
Maybe someday we'll do something about this.


Customer Support
----------------

If you really really care about getting this game working on your system, don't 
hesitate to send an email to kuzuhara@stanford.edu.  If Toru is still around, 
he'd be glad to help.